前言
之前做的是TipCalculator,功能实在是太过简单。
期间看了斯坦福大学教iOS10 Swift开发的公开课,正好有讲到计算器的设计例子,于是就想着实现一个,正好iPad Pro上不知道为什么没有原装的计算器app,用自己开发的app岂不是很酷呢?
设计思路
- 首先我们要知道想要这个app,干什么。很简单,数学计算。
- 其次,我们需要搭好自己的界面。界面上要放的组件很简单,一堆规律排放的按钮:UIButton,以及一个结果显示条:UILabel。
- 对于计算器上的按钮,我们需要它做的就是得到它对应的值或运算符。
- 而UILabel,当然就是显示运算过程以及结果啦。
Step by Step
首先我们让按钮来传值:
- 对于每一个button,control+drag,连接到controller,(嫌一个个连太麻烦?直接连第一个button,然后其他的都copy就好啦)
然后写一个方法,就叫它为SendDigit,不多说,来看具体代码:
@IBAction func SendDigit(_ sender: UIButton) {
let digit = sender.currentTitle!
print(digit + " is clicked")
}
在听课的过程中,也弄明白了为什么要在text后面加一个!,因为button上面的值是optional的,button上的值可能是empty的,而!就是为了得到它的值并传给digit,表示默认为非nil,直接解包(unwrap)进行处理。
否则就会出现 (optional)7 is clicked 的情况。
好的,现在我们已经成功实现button传值了。
将点击button的值显示在UILabel上。
@IBOutlet weak var showResult: UILabel!
@IBAction func SendDigit(_ sender: UIButton) {
let digit = sender.currentTitle!
showResult.text! = digit
}
这里对showResult.text后添加!也是与上面同理
好了,现在运行,测试,可以显示了!
可是,每次只能显示一个button的数字,那要输两位数以上该怎么办呢?
那就,这样?
let textCurrently = showResult.text!
showResult.text! = textCurrently + digit
可以输入两位数了!
但是,每次输的时候,会把前面默认的0带上,这样显然是不正确的。
于是,我们就可以想一种方法来让程序判断,用户是否正在输入。
设一bool 变量,初始设为false,如果正在输入,就让 按的button传的数字跟在Label上的数字后面。如果不是,就替换更新Label上的数字。
实现常量显示
接下来,尝试着添加特殊常数button,点击button,即显示该常数值内容。
原理很简单,同样是send digit。
--- 持续更新 ---
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。